/*********************
 * 代码名称：aha 算法 找回文子串
 * 功能实现：数组实现栈找回文串
 * 代码提供：tiaya@qq.com
 * 编写时间：2022年 04月 -04日
 **********************/
#include <iostream>
#include <cstdlib>
#include <cstring>

using namespace std;

int main() {
    //code here
    char s[1001];      //字符串
    char stack[1001]; //堆栈

    cout << "请输入子串,然后回车：" << endl;
    gets(s);        //读入一个字符串

    int slen = strlen(s);

    int mid = slen / 2 - 1;

    int top = 0;    //一开始栈为空

    int next = 0;

    for(int i=0; i <= mid; i++) {
        stack[++top] = s[i];
    }

    //判断字符串个数是基数还是偶数
    if(slen % 2 == 0) {
        next = mid + 1;
    } else {
        next = mid + 2;
    }

    //判断回文串，就是堆栈里面的前半段字符串和后半段比较，如果都相同，则top == 0
    for(int i=next; i<=slen - 1; i++) {
        if(s[i] != stack[top])
            break;
        top --;
    }

    //输出判断结果
    if (top == 0) {
        cout << "YES," << s << " 是一个回文字符串." << endl;
    } else {
        cout <<  "NO," << s << " 不是一个文字符串." << endl;
    }

    getchar(); getchar();
    //system("pause");

    return 0;
}
